package com.ruoyi.system.api.mapper;

import com.ruoyi.system.api.domain.ReportInfo;
import com.ruoyi.system.api.domain.ServiceNotice;
import com.ruoyi.system.api.domain.StReportPort;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 服务通知的子服务与报告关联Mapper接口
 * 
 * @author ruoyi
 * @date 2020-03-03
 */
public interface ReportInfoMapper
{
    /**
     * 查询服务通知的子服务与报告关联
     * 
     * @param id 服务通知的子服务与报告关联ID
     * @return 服务通知的子服务与报告关联
     */
    public ReportInfo selectStReportInfoById(Long id);

    /**
     * 查询服务通知的子服务与报告关联列表
     * 
     * @param stReportInfo 服务通知的子服务与报告关联
     * @return 服务通知的子服务与报告关联集合
     */
    public List<ReportInfo> selectStReportInfoList(ReportInfo stReportInfo);

    /**
     * 新增服务通知的子服务与报告关联
     * 
     * @param stReportInfo 服务通知的子服务与报告关联
     * @return 结果
     */
    public int insertStReportInfo(ReportInfo stReportInfo);

    /**
     * 修改服务通知的子服务与报告关联
     * 
     * @param stReportInfo 服务通知的子服务与报告关联
     * @return 结果
     */
    public int updateStReportInfo(ReportInfo stReportInfo);

    /**
     * 删除服务通知的子服务与报告关联
     * 
     * @param id 服务通知的子服务与报告关联ID
     * @return 结果
     */
    public int deleteStReportInfoById(Long id);

    /**
     * 批量删除服务通知的子服务与报告关联
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteStReportInfoByIds(String[] ids);

    /**
     *  根据BatchType查询服务报告主表信息
     *
     * @param batchType
     * @return com.ruoyi.system.api.domain.ReportInfo
     * @author yzg
     * @date 2020/3/6 8:47 上午
     */
    public ReportInfo selectStReportInfoByBatchType(@Param("batchType") Long batchType, @Param("relServiceNo") String relServiceNo);

    /**
     *  查询服务单已完成或者未完成的最后一次电话解决报告或服务报告
     *
     * @param serviceNo
     * @return com.ruoyi.system.api.domain.StReportPort
     * @author yzg
     * @date 2020/3/9 9:06 上午
     */
    public ReportInfo selectStReportPortListByLastPhoneReportOrServiceReport(@Param("serviceNo") String serviceNo);

    /**
     *  根据rel_plan_id 及 batch_type 更新服务结果
     *
     * @param serviceResult
     * @param relPlanId
     * @param batchType
     * @return int
     * @author yzg
     * @date 2020/3/9 2:14 下午
     */
    public int updateServiceResults(@Param("serviceResult") Long serviceResult, @Param("relPlanId") String relPlanId, @Param("batchType") Long batchType);

    /**
     *  查询报告列表
     *
     * @param stReportInfo
     * @return int
     * @author sjy
     * @date 2020年3月9日19:39:26
     */
    public List<ReportInfo> getReportList(ReportInfo stReportInfo);

    /**
     *  查询安装验收报告
     *
     * @param String
     * @return int
     * @author bairuihua
     * @date 2020年5月27日19:39:26
     */
    public List<ReportInfo> getCheckReport(@Param("serviceNo") String serviceNo, @Param("enginnerId") String enginnerId);

    public List<ReportInfo> getReportListAndReportResult(ReportInfo stReportInfo);
    /**
     *  查询客户签名列表
     *
     * @param stReportInfo
     * @return int
     * @author sjy
     * @date 2020年3月21日13:21:48
     */
    public List<ReportInfo>  getCustomerSignList(ReportInfo stReportInfo);

    /**
     * 查询备件是否关联草稿
     * @methodName: queryPartDraft
     * @description: TODO
     * @param enginnerId 工程师id
     * @param partId 备件id
     * @return: int
     * @author: wlf
     * @date: 2020/3/30 9:58
     **/
    public List<ReportInfo> queryPartDraft(@Param("enginnerId") String enginnerId, @Param("partId") String partId);

    /**
     * 获取当前工程师已完成服务报告/电话解决报告的服务单信息
     * @methodName: getReportInfo
     * @description: TODO
     * @param serviceNo
     * @param enginnerId
     * @return: java.util.List<com.ruoyi.system.api.domain.ReportInfo>
     * @author: shihx
     * @date: 2020-03-31 8:42
    **/
    public List<ReportInfo> getReportInfo(@Param("serviceNo") String serviceNo, @Param("enginnerId") String enginnerId);

    /**
     * 根据服务单号，获取所有已完成服务报告/电话解决报告的服务单信息
     * @methodName: getServiceReportInfo
     * @description: TODO
     * @param serviceNo
     * @return: java.util.List<com.ruoyi.system.api.domain.ReportInfo>
     * @author: xlq
     * @date: 2020-06-24 15:41
     */
    public List<ReportInfo> getServiceReportInfo(@Param("serviceNo") String serviceNo);
    
    /**
     *  根据服务通知号查询已完成的服务报告或电话解决报告
     *
     * @param serviceNo
     * @return java.util.List<com.ruoyi.system.api.domain.ReportInfo>
     * @author yzg
     * @date 2020/4/10 1:20 下午
     */
    List<ReportInfo> selectFinishStReportInfoByServiceNo(@Param("id") Long id, @Param("serviceNo") String serviceNo);
    List<ReportInfo> selectSubmitFinishStReportInfoByServiceNo(@Param("id") Long id, @Param("serviceNo") String serviceNo);
    /**
     *  根据服务通知号检查是否存在有未提交的报告
     *
     * @param serviceNo
     * @return java.util.List<com.ruoyi.system.api.domain.ReportInfo>
     * @author yzg
     * @date 2020/4/10 1:20 下午
     */
    List<ReportInfo> checkFinishStReportInfoByServiceNo( @Param("serviceNo") String serviceNo);


    ReportInfo selectStReportInfoByServiceNoAndEnginnerIdAndRelServiceNoAndRelPlanIdAndBatchType(@Param("serviceNo") String serviceNo, @Param("enginnerId") Long enginnerId, @Param("relServiceNo") String relServiceNo, @Param("relPlanId") String relPlanId, @Param("batchType") Long batchType);
    /**
     * 根据服务号获取已完成的现场服务单和验收报告
     * @methodName: getReportInfoSignature
     * @description: TODO
     * @param serviceNo
     * @return: java.util.List<com.ruoyi.system.api.domain.ReportInfo>
     * @author: shihx
     * @date: 2020-04-10 9:09
    **/
    public List<ReportInfo>  getReportInfoSignature(@Param("serviceNo") String serviceNo);

    /**
     *  根据服务号查询已完成的电话解决报告或现场服务报告
     *
     * @param serviceNo
     * @return java.util.List<com.ruoyi.system.api.domain.ReportInfo>
     * @author yzg
     * @date 2020/4/14 6:51 下午
     */
    public List<ReportInfo> selectReportFinishByServiceNo(@Param("serviceNo") String serviceNo);

    public int selectReportCountByServiceNoAndRelServiceNo(@Param("serviceNo") String serviceNo, @Param("relServiceNo") String relServiceNo);

    List<ReportInfo> selectStReportInfoByServiceNoAndEnginnerIdAndRelServiceNoAndPlanId(@Param("serviceNo") String serviceNo, @Param("enginnerId") Long enginnerId, @Param("relServiceNo") String relServiceNo, @Param("planId") String planId);

    List<ReportInfo> selectStReportInfoByServiceNoAndRelServiceNo(@Param("serviceNo") String serviceNo,  @Param("relServiceNo") String relServiceNo);

    public int selectLogCountByServiceNo(@Param("serviceNo") String serviceNo);


    Map<String, Object> selectReportStartEndTime(@Param("serviceNo") String serviceNo, @Param("enginnerId") Long enginnerId);

    List<ReportInfo> checkPhoneResolutionReportCompleted(@Param("serviceNo") String serviceNo, @Param("enginnerId") Long enginnerId, @Param("planId") String planId);


    List<String> selectLogCountByServiceNoFseName(@Param("serviceNo") String serviceNo);

    List<Map> getServiceStatusByServiceNo(@Param("serviceNo") String serviceNo,@Param("fseId") String fseId);

    List<ReportInfo> selectByreportNo(@Param("reportNo") String reportNo);
    /**
     *  查询所有客户签名列表
     *
     * @param stReportInfo
     * @return int
     * @author sjy
     * @date 2020年3月21日13:21:48
     */
    public List<ReportInfo>  getAllCustomerSignList(ReportInfo stReportInfo);

    public int updateStReportInfoByReportNo(ReportInfo stReportInfo);

}
